/*
 *  AComponent.h
 *  libavid
 *
 *  Created by Peter on 23.02.12.
 *  Copyright 2012 __MyCompanyName__. All rights reserved.
 *
 */
#ifndef A_COMPONENT_H
#define A_COMPONENT_H

#include "AObject.h"
#include "AAttrList.h"

/*
 * Version 3: 'COMP'
 * This is the base class for AComposition (from which in turn AClip is 
 * derived, which then has AFillerClip, ATimecodeClip etc.), also 'MASK'
 */
class AComponent : public AObject
{
	
public:
	
	A_DECLARE_CLASS( 'COMP', AComponent, AObject );
	
	virtual void readFromStream( AStream& stream, const AObjDoc& objd );
	virtual void dump( std::ostream& str ) const;
	
	UInt32      _leftBob;  // 0
	UInt32      _rightBob; // 0
	Int16       _trackKind; // 0
    Int32       _edRateMantissa; // 23976
	Int16       _edRateExp10; // -3
	std::string _name; // "Untitled Sequence"
	std::string _effectId; // "", might be "EFF2_BLEND_MASK_235" for an ATrackEffect
	AAttrList*  _attributes; // 0x000002AB (OMF field, spec should help), maybe an ATTR-pointer
	AAttrList*  _sessionAttrs; // 0x000002AA (Maybe an ATTR ptr?)
	UInt32      _precomputed; // 0
	UInt32      _paramList; // 0x00000000 (suspecting another object reference here).
};

#endif